﻿using System;
using System.Windows.Controls.Primitives;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using produccion.clases;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using produccion.vistamodelo;
using produccion.reportes;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FrmLiquidacionDeNomina.xaml
    /// </summary>
    public partial class FrmLiquidacionDeNomina : Window
    {
        MDOgeneral MdoGeneral = new MDOgeneral();//FJRF - Traemos toda la informacion y funciones de MdoGeneral
        DataTable DtConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        DataSet DsConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        DataSet DsImprimir;//FJRF - Usamos este dataset para la impresion de consultas
        DataTable DtImprimir = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas
        DataTable DtImprimirParametros = new DataTable();//FJRF - Usamos este DataTable para la impresion de parametros

        DataTable DtImprimirLiquidacionMontaje1 = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas de  montaje
        DataTable DtImprimirLiquidacionMontaje2 = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas de  montaje
        DataTable DtImprimirGuarnecida = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas de  montaje

        DataTable DtImprimirIncentivoCorte = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas de  incentivo corte
        DataTable DtImprimirIncentivoCorte1 = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas de  incentivo corte
        DataTable DtImprimirIncentivoCorte2 = new DataTable();//FJRF - Usamos este DataTable para la impresion de consultas de  incentivo corte

        String StrConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        //String StrRutaReporteCrystalReport = @"C:\produccion\produccionartesa\reportes\";//FJRF - Esta es la ruta de los reportes de crystal reports
        String StrRutaReporteCrystalReport = @"reportes\";//FJRF - Esta es la ruta de los reportes de crystal reports
        public FrmLiquidacionDeNomina()
        {
            InitializeComponent();
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DgDatos1.Width = 990;

            StrConsulta = "Select ano_sem from semanasp group by ano_sem order by ano_sem";
            CargarCombo(CboAño, StrConsulta, "ANO_SEM", "ANO_SEM");
        }
        //FJRF - Con esta funcion cargamos los combos (Cargar combos)
        private Boolean CargarCombo(ComboBox CboComboACargar, string strConsultaOracle, string strSelectedValuePath, string strDisplayMemberPath)
        {
            Boolean BooSiHayDatos = false;//FJRF - Variable para informar si hay datos o no
            CboComboACargar.ItemsSource = null;
            CboComboACargar.Items.Clear();//FJRF - Borramos los posibles datos que pueda tener el combo

            DtConsulta = new DataTable();//FJRF - Inicializamos la variable
            DsConsulta = new DataSet();//FJRF - Inicializamos la variable

            DtConsulta = MdoGeneral.consulta(strConsultaOracle);//FJRF - Realizamos la consulta y retornamos los datos

            if (DtConsulta.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
            {
                BooSiHayDatos = true;//FJRF - Informamos que hay datos

                DataRow drEncabezado;
                drEncabezado = DtConsulta.NewRow();

                drEncabezado[strSelectedValuePath] = "0";
                drEncabezado[strDisplayMemberPath] = "0";

                DtConsulta.Rows.Add(drEncabezado);

                DsConsulta.Tables.Add(DtConsulta);//FJRF - Adicionameos el datatable al dataset
                CboComboACargar.ItemsSource = DsConsulta.Tables[0].DefaultView;//FJRF - Cargamos los datos encontrados
                CboComboACargar.SelectedValuePath = strSelectedValuePath;//FJRF - Cargamos la posicion
                CboComboACargar.DisplayMemberPath = strDisplayMemberPath;//FJRF - Decimos cual dato se mostrara

                CboComboACargar.SelectedIndex = 0;//FJRF - Ponemos el combo en la primera posicion
            }
            return BooSiHayDatos;//FJRF - Avisamos que si hay o no hay datos
        }

        private void CboAño_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LimpiarGrid();

            StrConsulta = "Select nrosem_sem from semanasp where ano_sem = '" + CboAño.SelectedValue + "' order by nrosem_sem";//FJRF - Hacemos la consulta
            CargarCombo(CboSemana, StrConsulta, "NROSEM_SEM", "NROSEM_SEM");//FJRF - Cargamos el combo
            CboAño.Focus();//FJRF - Ponemos el foco en el primer reguistro
        }
        private void CboSemana_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LimpiarGrid();

            DtConsulta = new DataTable();//FJRF - Inicializamos la variable

            StrConsulta = "Select desde_sem, hasta_sem from semanasp where ano_sem = '" + CboAño.SelectedValue + "' And nrosem_sem = '" + CboSemana.SelectedValue + "' ";//FJRF - Hacemos la consulta
            DtConsulta = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos
            if (DtConsulta.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
            {
                LblDesde.Content = Convert.ToDateTime(DtConsulta.Rows[0][0].ToString()).ToShortDateString();//FJRF - Armamos la fecha en un formato correcto
                LblHasta.Content = Convert.ToDateTime(DtConsulta.Rows[0][1].ToString()).ToShortDateString();//FJRF - Armamos la fecha en un formato corresto
            }
            else//FJRF - Si no hay datos hacemos lo siguiente
            {
                LblDesde.Content = "_ _ /_ _ /_ _ _ _";//FJRF - simulamos un limpiado de fecha
                LblHasta.Content = "_ _ /_ _ /_ _ _ _";//FJRF - simulamos un limpiado de fecha
            }
        }
        private void CboProceso_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //FJRF - SI CAMBIA LA SECCION SE DEBE BORRAR TODOS LOS COMBOS
            CboEquipo.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
            CboProcesoSeleccionado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
            CboEquipo.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
            CboProcesoSeleccionado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
            CboEmpleado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
            CboEmpleado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
            //FJRf - INAVILITAMOS TODOS LOS OBJETOS
            CboEmpleado.IsEnabled = false;//FJRF - Inavilitamos el combo
            CboEquipo.IsEnabled = false;//FJRF - Inavilitamos el combo
            CboProcesoSeleccionado.IsEnabled = false;//FJRF - Inavilitamos el combo
            //FJRF - LIMPIAMOS EL GRID
            DgDatos1.ItemsSource = null;//FJRF - Descargamos los datos
            DgDatos1.Items.Clear();//FJRF - Limpiamos los datos del grid

            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso seleccionado

            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = "";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = strProceso.Replace("System.Windows.Controls.ComboBoxItem:", "").Trim();//FJRF - Dejamos solo la palabra seleccionada en la variable
            }

            if (strProceso == "PRODUCCIÓN")//FJRF - Preguntamos si la variable trae este dato
            {
                CboEquipo.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
                CboProcesoSeleccionado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto

                CboEquipo.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
                CboProcesoSeleccionado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto

                StrConsulta = "Select codemp_emp As Codigo, nomemp_emp As Nombre from maeempp Order by nomemp_emp";//FJRF - Realizamos la consulta
                CargarCombo(CboEmpleado, StrConsulta, "CODIGO", "NOMBRE");

                CboEmpleado.IsEnabled = true;//FJRF - Habilitamos el objeto

            }
            if (strProceso == "GUARNECIDA" || strProceso == "TERMINADA")//FJRF - Preguntamos si la variable trae este dato
            {
                CboEquipo.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
                CboProcesoSeleccionado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto

                CboEquipo.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
                CboProcesoSeleccionado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto

                CboEmpleado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
                CboEmpleado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                CboEquipo.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
                CboProcesoSeleccionado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto

                CboEquipo.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto
                CboProcesoSeleccionado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto

                StrConsulta = "Select codemp_emp As Codigo, nomemp_emp As Nombre from maeempp Order by nomemp_emp";//FJRF - Realizamos la consulta
                CargarCombo(CboEmpleado, StrConsulta, "CODIGO", "NOMBRE");

                CboEmpleado.IsEnabled = true;//FJRF - Habilitamos el objeto
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                CboEmpleado.ItemsSource = null;//FJRF - Descargamos los datos en memoria del objeto
                CboEmpleado.Items.Clear();//FJRF - Quitamos los elementos creados en el objeto


                StrConsulta = "select CODEQU_EQU from maeequ where ANO_EQU = '" + CboAño.SelectedValue + "' AND SEMANA_EQU = '" + CboSemana.SelectedValue + "' group by CODEQU_EQU order by CODEQU_EQU";//FJRF - Realizamos la consulta
                CargarCombo(CboEquipo, StrConsulta, "CODEQU_EQU", "CODEQU_EQU");

                StrConsulta = "select CODPRC_PPR AS CODIGO, NOMPRC_PPR AS NOMBRE from prcprd order by nomprc_ppr";//FJRF - Realizamos la consulta
                CargarCombo(CboProcesoSeleccionado, StrConsulta, "CODIGO", "NOMBRE");

                CboEquipo.IsEnabled = true;//FJRF - Habilitamos el objeto
                CboProcesoSeleccionado.IsEnabled = true;//FJRF - Habilitamos el objeto
            }
            BtnProcesar.IsEnabled = true;//FJRF - Habilitamos el objeto
        }
        private void BtnProcesar_Click(object sender, RoutedEventArgs e)
        {
            Mouse.OverrideCursor = Cursors.Wait;//FJRF - Pone el cursor en modo de espera

            Boolean BooProcesoIgualACero = false;

            Int32 Int32ParametroAño;//FJRF - Variable para enviar el parametro del año seleccionado
            Int32 Int32ParametroSemana;//FJRF - Variable para inviar el parametro de la semana seleccionado
            String StrCodigoEmpleado;//FJRF - Variable para inviar el parametro del empleado seleccionado
            String StrCodigoEquipo;//FJRF - Variable para inviar el parametro del equipo seleccionado
            String StrCodigoProceso;//FJRF - Variable para inviar el parametro del proceso seleccionado
            Int32 Int32Calle;//FJRF - Variable para inviar el parametro del calle para el proceso de guarnecida

            Int32ParametroAño = Int32.Parse(CboAño.Text);
            Int32ParametroSemana = Int32.Parse(CboSemana.Text);
            
            DgDatos2.Visibility = Visibility.Hidden;//FJRF - Ponemos el grid invisible
            DgDatos3.Visibility = Visibility.Hidden;//FJRF - Ponemos el grid invisible

            DgDatos1.Height = 400;//FJRF - Tamaño grande del grid forma normal
            DgDatos1.Width = 990;//FJRF - Tamaño grande del grid forma normal

            BtnImprimirOpcion1.Visibility = Visibility.Hidden;//FJRF - Ponemos invisible la opcion de imprimir
            BtnImprimirOpcion2.Visibility = Visibility.Hidden;//FJRF - Ponemos invisible la opcion de imprimir

            BtnImprimirOpcion1.IsEnabled = false;//FJRF - Se inabilita el imprimir
            BtnImprimirPlano.IsEnabled = false;//FJRF - Se inabilita el imprimir
            BtnImprimirOpcion1.Margin = new Thickness(422, 200, 0, 0);//FJRF - Establece las margenes originales

            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = strProceso.Replace("System.Windows.Controls.ComboBoxItem:", "").Trim();//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "PRODUCCIÓN")//FJRF - Preguntamos si la variable trae este dato
            {
                StrCodigoEmpleado = CboEmpleado.SelectedValue.ToString();
                if (StrCodigoEmpleado == "0")
                {
                    StrCodigoEmpleado = " ";
                    BooProcesoIgualACero = true;
                }
                try
                {
                    MDOgeneral.spComando.CommandText = "SP_INFLIQPROD";//FJRF - Procedimiento almacenado que se ejecutara
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;//FJRF - Cargamos la conexion a la base de datos
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();//FJRF - Limpiamos lo parametros que pudieran existir

                    //FJRF - Input Enviamor los parametros de entrada
                    MDOgeneral.spComando.Parameters.Add("PNU_ANO", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroAño;
                    MDOgeneral.spComando.Parameters.Add("PNU_SEMANA", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroSemana;
                    MDOgeneral.spComando.Parameters.Add("PNU_CODEMP", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(StrCodigoEmpleado) ? " " : StrCodigoEmpleado;

                    //FJRF - Output Estos son los parametros de salida
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();

                    DtConsulta = new DataTable("TMPLIQPROD");//FJRF - Inicializamos la variable con un nombre de tabla

                    if (BooProcesoIgualACero == false)
                    {
                        StrConsulta = "SELECT CODEMP_TMP AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, CODPRC_TMP AS CODIGOPROCESO, CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA, CODORD_TMP AS ORDENES, POREMP_TMP AS PORCENTAJE, CANTID_TMP AS CANTIDAD, CTGREF_TMP AS CATEGORIA, PARCTG_TMP AS PARES, SECPRO_TMP AS PESOS, PESPAG_TMP AS APAGAR, FESTVO_TMP AS FESTIVO, TOTAL_TMP AS TOTAL FROM TMPLIQPROD WHERE CODEMP_TMP = '" + StrCodigoEmpleado + "'";//FJRF - Cramos la consulta con el parametro de empleado
                    }
                    else
                    {
                        StrConsulta = "SELECT CODEMP_TMP AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, CODPRC_TMP AS CODIGOPROCESO, CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA, CODORD_TMP AS ORDENES, POREMP_TMP AS PORCENTAJE, CANTID_TMP AS CANTIDAD, CTGREF_TMP AS CATEGORIA, PARCTG_TMP AS PARES, SECPRO_TMP AS PESOS, PESPAG_TMP AS APAGAR, FESTVO_TMP AS FESTIVO, TOTAL_TMP AS TOTAL, ORDEN_TMP AS ORDEN FROM TMPLIQPROD ORDER BY ORDEN_TMP ";//FJRF - Cramos la consulta con el parametro de empleado
                    }
                    
                    DtConsulta = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos
                    
                    if (DtConsulta.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DtImprimir.Clear();//FJRF - Se limpia el datatable

                        DgDatos1.ItemsSource = DtConsulta.DefaultView;//FJRF - Cargamos los datos en el grid
                        DtImprimir = DtConsulta;

                        BtnImprimirPlano.IsEnabled = true;//FJRF - Se habilita el imprimir
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {
                        LimpiarGrid();
                    }
               }
               catch (Exception ex)//FJRF - Si se presenta un error en el procedimiento hacemos lo siguiente
               {
                   MessageBox.Show("Descripción del error: " + ex.ToString(), "ERROR EN PROCEDIMIENTO ALMACENADO: SP_INFLIQPROD");//FJRF - Enviamos el mensaje de error
               }
            }
            if (strProceso == "TERMINADA")//FJRF - Preguntamos si la variable trae este dato
            {
                Int32Calle = 0;
                try
                {
                    MDOgeneral.spComando.CommandText = "SP_INFLIQTER";//FJRF - Procedimiento almacenado que se ejecutara
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;//FJRF - Cargamos la conexion a la base de datos
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();//FJRF - Limpiamos lo parametros que pudieran existir

                    //FJRF - Input Enviamor los parametros de entrada
                    MDOgeneral.spComando.Parameters.Add("PNU_ANO", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroAño;
                    MDOgeneral.spComando.Parameters.Add("PNU_SEMANA", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroSemana;
                    MDOgeneral.spComando.Parameters.Add("PNU_CALLE", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32Calle;

                    //FJRF - Output Estos son los parametros de salida
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();

                    StrConsulta = "SELECT CODEMP_TMP AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, CODPRC_TMP AS PROCESO, SUBPRC_TMP AS SUBPROCESO, CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA, ORDNRO_TMP AS ORDENES, PORCEN_TMP AS PORCENTAJE, CTGREF_TMP AS CATEGORIAPORREFERENCIA, CANPRC_TMP AS CANTIDADPROCESO, FESTIVO_TMP AS FESTIVO, VLRSEC_TMP AS VALOR, NETO_TMP AS NETO , AJUSTE_TMP AS AJUSTE, TOTAL_TMP AS TOTAL FROM tmpliqgua ORDER BY NOMEMP_TMP";//FJRF - Cramos la consulta Terminada
                    DtImprimirGuarnecida = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    if (DtImprimirGuarnecida.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DtImprimir.Clear();

                        DgDatos1.ItemsSource = DtImprimirGuarnecida.DefaultView;//FJRF - Cargamos los datos en el grid

                        BtnImprimirPlano.IsEnabled = true;//FJRF - Se habilita el imprimir
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {
                        LimpiarGrid();
                    }
                }
                catch (Exception ex)//FJRF - Si se presenta un error en el procedimiento hacemos lo siguiente
                {
                    MessageBox.Show("Descripción del error: " + ex.ToString(), "ERROR EN PROCEDIMIENTO ALMACENADO: SP_INFLIQTER");//FJRF - Enviamos el mensaje de error
                }
            }
            if (strProceso == "GUARNECIDA")//FJRF - Preguntamos si la variable trae este dato
            {
                Int32Calle = 0;
                try
                {
                    MDOgeneral.spComando.CommandText = "SP_INFLIQGUA";//FJRF - Procedimiento almacenado que se ejecutara
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;//FJRF - Cargamos la conexion a la base de datos
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();//FJRF - Limpiamos lo parametros que pudieran existir

                    //FJRF - Input Enviamor los parametros de entrada
                    MDOgeneral.spComando.Parameters.Add("PNU_ANO", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroAño;
                    MDOgeneral.spComando.Parameters.Add("PNU_SEMANA", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroSemana;
                    MDOgeneral.spComando.Parameters.Add("PNU_CALLE", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32Calle;

                    //FJRF - Output Estos son los parametros de salida
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();

                    StrConsulta = "SELECT CODEMP_TMP AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, CODPRC_TMP AS PROCESO, SUBPRC_TMP AS SUBPROCESO, CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA, ORDNRO_TMP AS ORDENES, PORCEN_TMP AS PORCENTAJE, CTGREF_TMP AS CATEGORIAPORREFERENCIA, CANPRC_TMP AS CANTIDADPROCESO, FESTIVO_TMP AS FESTIVO, VLRSEC_TMP AS VALOR, NETO_TMP AS NETO , AJUSTE_TMP AS AJUSTE, TOTAL_TMP AS TOTAL FROM tmpliqgua ORDER BY NOMEMP_TMP";//FJRF - Cramos la consulta guarnecida
                    DtImprimirGuarnecida = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    if (DtImprimirGuarnecida.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DtImprimir.Clear();

                        DgDatos1.ItemsSource = DtImprimirGuarnecida.DefaultView;//FJRF - Cargamos los datos en el grid

                        BtnImprimirPlano.IsEnabled = true;//FJRF - Se habilita el imprimir
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {
                        LimpiarGrid();
                    }
                }
                catch (Exception ex)//FJRF - Si se presenta un error en el procedimiento hacemos lo siguiente
                {
                    MessageBox.Show("Descripción del error: " + ex.ToString(), "ERROR EN PROCEDIMIENTO ALMACENADO: SP_INFLIQPROD");//FJRF - Enviamos el mensaje de error
                }
            }

            
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                StrCodigoEmpleado = CboEmpleado.SelectedValue.ToString();
                if (StrCodigoEmpleado == "0")
                {
                    StrCodigoEmpleado = " ";
                    BooProcesoIgualACero = true;
                }
                try
                {
                    MDOgeneral.spComando.CommandText = "SP_INFLIQINC";//FJRF - Procedimiento almacenado que se ejecutara
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;//FJRF - Cargamos la conexion a la base de datos
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();//FJRF - Limpiamos lo parametros que pudieran existir

                    //FJRF - Input Enviamor los parametros de entrada
                    MDOgeneral.spComando.Parameters.Add("PNU_ANO", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroAño;
                    MDOgeneral.spComando.Parameters.Add("PNU_SEMANA", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroSemana;
                    MDOgeneral.spComando.Parameters.Add("PNU_CODEMP", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(StrCodigoEmpleado) ? " " : StrCodigoEmpleado;

                    //FJRF - Output Estos son los parametros de salida
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();

                    DtImprimirIncentivoCorte = new DataTable();//FJRF - Inicializamos la variable con un nombre de tabla
                    
                    if (BooProcesoIgualACero == false)
                    {
                        StrConsulta = "SELECT ";
                        StrConsulta = StrConsulta + "CODEMP_TMP AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, ";
                        StrConsulta = StrConsulta + "CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA, ";
                        StrConsulta = StrConsulta + "CODCOL_TMP AS CODIGOCOLOR, NOMCOL_TMP AS NOMBRECOLOR, ";
                        StrConsulta = StrConsulta + "CODMAT_TMP AS CODIGOMATERIAL, COLMAT_TMP AS CODIGOCOLORMATERIAL, NOMMAT_TMP AS NOMBREMATERIAL, ";
                        StrConsulta = StrConsulta + "NROORD_TMP AS ORDENES, ";
                        StrConsulta = StrConsulta + "ENTTOT_TMP AS ENTREGADO, ";
                        StrConsulta = StrConsulta + "DEVTOT_TMP AS DEVUELTO, ";
                        StrConsulta = StrConsulta + "PARTOT_TMP AS PARCIAL, ";
                        StrConsulta = StrConsulta + "CANTOT_TMP AS CANTIDAD, ";
                        StrConsulta = StrConsulta + "CONSTA_TMP AS ESTANDAR, ";
                        StrConsulta = StrConsulta + "CONREA_TMP AS CANTIDADREAL, ";
                        StrConsulta = StrConsulta + "VLRTOT_TMP AS APAGAR ";
                        StrConsulta = StrConsulta + "FROM TMPLIQINC ";
                        StrConsulta = StrConsulta + "WHERE CODEMP_TMP = '" + StrCodigoEmpleado + "' ";//FJRF - Cramos la consulta con el parametro de empleado
                        StrConsulta = StrConsulta + "ORDER BY NOMEMP_TMP, NROORD_TMP, NOMMAT_TMP ";
                    }
                    else
                    {
                        StrConsulta = "SELECT ";
                        StrConsulta = StrConsulta + "CODEMP_TMP AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, ";
                        StrConsulta = StrConsulta + "CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA, ";
                        StrConsulta = StrConsulta + "CODMAT_TMP AS CODIGOMATERIAL, COLMAT_TMP AS CODIGOCOLORMATERIAL, NOMMAT_TMP AS NOMBREMATERIAL, ";
                        StrConsulta = StrConsulta + "CODCOL_TMP AS CODIGOCOLOR, NOMCOL_TMP AS NOMBRECOLOR, ";
                        StrConsulta = StrConsulta + "NROORD_TMP AS ORDENES, ";
                        StrConsulta = StrConsulta + "ENTTOT_TMP AS ENTREGADO, ";
                        StrConsulta = StrConsulta + "DEVTOT_TMP AS DEVUELTO, ";
                        StrConsulta = StrConsulta + "PARTOT_TMP AS PARCIAL, ";
                        StrConsulta = StrConsulta + "CANTOT_TMP AS CANTIDAD, ";
                        StrConsulta = StrConsulta + "CONSTA_TMP AS ESTANDAR, ";
                        StrConsulta = StrConsulta + "CONREA_TMP AS CANTIDADREAL, ";
                        StrConsulta = StrConsulta + "VLRTOT_TMP AS APAGAR ";
                        StrConsulta = StrConsulta + "FROM TMPLIQINC ";
                        StrConsulta = StrConsulta + "ORDER BY NOMEMP_TMP, NROORD_TMP, NOMMAT_TMP ";
                    }

                    DtImprimirIncentivoCorte = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    if (DtImprimirIncentivoCorte.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DgDatos1.Width = 490;//FJRF - Tamaño grande del grid forma normal
                        DgDatos1.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2

                        DgDatos1.ItemsSource = DtImprimirIncentivoCorte.DefaultView;//FJRF - Cargamos los datos en el grid

                        BtnImprimirOpcion1.Visibility = Visibility.Visible;//FJRF - Se habilita el imprimir
                        BtnImprimirOpcion1.IsEnabled = true;//FJRF - Se habilita el imprimir

                        BtnImprimirOpcion1.Margin = new Thickness(194, 195, 0, 0);//FJRF - Establece las nuevas margenes
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {
                        
                    }
                    //FJRF SEGUNDA CONSULTA
                    DtImprimirIncentivoCorte1 = new DataTable();//FJRF - Inicializamos la variable con un nombre de tabla

                    if (BooProcesoIgualACero == false)
                    {
                        StrConsulta = "SELECT ";
                        StrConsulta = StrConsulta + "CODEMP_TMP  AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, ";
                        StrConsulta = StrConsulta + "CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA,  ";
                        StrConsulta = StrConsulta + "CODMAT_TMP AS CODIGOMATERIAL, NOMMAT_TMP AS NOMBREMATERIAL, ";
                        StrConsulta = StrConsulta + "COLMAT_TMP AS CODIGOCOLORMATERIAL, NOMCOL_TMP AS NOMBRECOLOR, ";
                        StrConsulta = StrConsulta + "CONREA_TMP AS CANTIDADREAL, ";
                        StrConsulta = StrConsulta + "VLRTOT_TMP AS APAGAR ";
                        StrConsulta = StrConsulta + "FROM TMPLIQINC1 ";
                        StrConsulta = StrConsulta + "WHERE CODEMP_TMP = '" + StrCodigoEmpleado + "' ";//FJRF - Cramos la consulta con el parametro de empleado
                        StrConsulta = StrConsulta + "ORDER BY NOMEMP_TMP, NOMMAT_TMP, NOMCOL_TMP ";
                    }
                    else
                    {
                        StrConsulta = "SELECT ";
                        StrConsulta = StrConsulta + "CODEMP_TMP  AS CODIGOEMPLEADO, NOMEMP_TMP AS NOMBREEMPLEADO, ";
                        StrConsulta = StrConsulta + "CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA,  ";
                        StrConsulta = StrConsulta + "CODMAT_TMP AS CODIGOMATERIAL, NOMMAT_TMP AS NOMBREMATERIAL, ";
                        StrConsulta = StrConsulta + "COLMAT_TMP AS CODIGOCOLORMATERIAL, NOMCOL_TMP AS NOMBRECOLOR, ";
                        StrConsulta = StrConsulta + "CONREA_TMP AS CANTIDADREAL, ";
                        StrConsulta = StrConsulta + "VLRTOT_TMP AS APAGAR ";
                        StrConsulta = StrConsulta + "FROM TMPLIQINC1 ";
                        StrConsulta = StrConsulta + "ORDER BY NOMEMP_TMP, NOMMAT_TMP, NOMCOL_TMP ";
                    }

                    DtImprimirIncentivoCorte1 = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    if (DtImprimirIncentivoCorte1.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DgDatos3.ItemsSource = DtImprimirIncentivoCorte1.DefaultView;//FJRF - Cargamos los datos en el grid
                        DgDatos3.Visibility = Visibility.Visible;//FJRF - Se habilita el imprimir

                        BtnImprimirOpcion2.Visibility = Visibility.Visible;//FJRF - Se habilita el imprimir
                        BtnImprimirOpcion2.IsEnabled = true;//FJRF - Se habilita el imprimir
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {

                    }
                    //FJRF TERCERA CONSULTA
                    DtImprimirIncentivoCorte2 = new DataTable();//FJRF - Inicializamos la variable con un nombre de tabla

                    StrConsulta = "SELECT ";
                    StrConsulta = StrConsulta + "CODREF_TMP AS CODIGOREFERENCIA, NOMREF_TMP AS NOMBREREFERENCIA,  ";
                    StrConsulta = StrConsulta + "CODMAT_TMP AS CODIGOMATERIAL, NOMMAT_TMP AS NOMBREMATERIAL, ";
                    StrConsulta = StrConsulta + "COLMAT_TMP AS CODIGOCOLORMATERIAL, NOMCOL_TMP AS NOMBRECOLOR, ";
                    StrConsulta = StrConsulta + "CONREA_TMP AS CANTIDADREAL, VLRTOT_TMP AS APAGAR  ";
                    StrConsulta = StrConsulta + "FROM TMPLIQINC2 ";
                    StrConsulta = StrConsulta + "ORDER BY NOMREF_TMP, NOMMAT_TMP, NOMCOL_TMP ";

                    DtImprimirIncentivoCorte2 = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    if (DtImprimirIncentivoCorte2.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DgDatos2.ItemsSource = DtImprimirIncentivoCorte2.DefaultView;//FJRF - Cargamos los datos en el grid
                        DgDatos2.Visibility = Visibility.Visible;//FJRF - Se habilita el imprimir

                        BtnImprimirPlano.Visibility = Visibility.Visible;//FJRF - Se habilita el imprimir
                        BtnImprimirPlano.IsEnabled = true;//FJRF - Se habilita el imprimir
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {

                    }
                }
                catch (Exception ex)//FJRF - Si se presenta un error en el procedimiento hacemos lo siguiente
                {
                    MessageBox.Show("Descripción del error: " + ex.ToString(), "ERROR EN PROCEDIMIENTO ALMACENADO INCENTIVO CORTE");//FJRF - Enviamos el mensaje de error
                }
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                StrCodigoEquipo = CboEquipo.SelectedValue.ToString();
                StrCodigoProceso = CboProcesoSeleccionado.SelectedValue.ToString();
                try 
                {
                    MDOgeneral.spComando.CommandText = "SP_INFLIQMON";//FJRF - Procedimiento almacenado que se ejecutara
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;//FJRF - Cargamos la conexion a la base de datos
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();//FJRF - Limpiamos lo parametros que pudieran existir

                    //FJRF - Input Enviamor los parametros de entrada
                    MDOgeneral.spComando.Parameters.Add("PNU_ANO", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroAño;
                    MDOgeneral.spComando.Parameters.Add("PNU_SEMANA", Oracle.DataAccess.Client.OracleDbType.Int32).Value = Int32ParametroSemana;
                    MDOgeneral.spComando.Parameters.Add("PVA_CODEQU", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(StrCodigoEquipo) ? " " : StrCodigoEquipo;
                    MDOgeneral.spComando.Parameters.Add("PVA_PRC", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(StrCodigoProceso) ? " " : StrCodigoProceso;

                    //FJRF - Output Estos son los parametros de salida
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();

                    StrConsulta = "SELECT CODPRC_TMP  AS PROCESO, CODREF_TMP AS CODIGO, NOMREF_TMP AS REFERENCIA, CODORD_TMP AS ORDENES, POREMP_TMP AS PORCENTAJE, CANTID_TMP AS CANTIDAD, CTGREF_TMP AS CATEGORIA, PARCTG_TMP AS PARES, SECPRO_TMP AS PESOS, PESPAG_TMP AS APAGAR FROM tmpliqprod ORDER BY NOMREF_TMP";//FJRF - Cramos la primer consulta
                    DtImprimirLiquidacionMontaje1 = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    StrConsulta = "SELECT CODEMP_TMP AS CODIGO, NOMEMP_TMP AS EMPLEADO, BASMES_TMP AS BASE, TOTPRD_TMP AS TOTALEQUIPO, POREMP_TMP AS PARTICIPACION, APAGAR_TMP AS DEVENGADOPRODUCCION, VLRDED_TMP AS NOTRABAJADAS, VLRBON_TMP AS TRABAJADAS, VLRDES_TMP AS PARTBONIFICACIONES, VLRAGR_TMP AS PARTDEDUCCIONES, OTRDED_TMP AS OTRASDEDUCCIONES, OTRBON_TMP AS OTRASBONIFICACIONES, FESTIVO_TMP AS FESTIVO, AJUSTE_TMP AS AJUSTE, NETO_TMP AS NETOAPAGAR FROM tmpliqprod1 ORDER BY NOMEMP_TMP";//FJRF - Cramos la segunda consulta
                    DtImprimirLiquidacionMontaje2 = MdoGeneral.consulta(StrConsulta);//FJRF - Realizamos la consulta y retornamos los datos

                    if (DtImprimirLiquidacionMontaje1.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                    {
                        DgDatos1.ItemsSource = DtImprimirLiquidacionMontaje1.DefaultView;//FJRF - Cargamos los datos en el grid
                        //FJRF - CAMBIAR TAMAÑO A LAS COLUMNAS
                        DgDatos1.Columns[2].Width = 200;//FJRF - Se modifica el tamaño de la columna nombre de la referencia
                        DgDatos1.Columns[3].Width = 250;//FJRF - Se modifica el tamaño de la columna ordenes

                        BtnImprimirOpcion1.IsEnabled = true;//FJRF - Se habilita el imprimir

                        if (DtImprimirLiquidacionMontaje2.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
                        {
                            DgDatos2.ItemsSource = DtImprimirLiquidacionMontaje2.DefaultView;//FJRF - Cargamos los datos en el grid

                            DgDatos1.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2
                            DgDatos2.Visibility = Visibility.Visible;//FJRF - Ponemos visible el grid 2
                            BtnImprimirOpcion1.Visibility = Visibility.Visible;//FJRF - Ponemos visible la opcion de imprimir

                            BtnImprimirPlano.IsEnabled = true;//FJRF - Se habilita el imprimir
                        }
                        else//FJRF - Si no hay datos hacemos lo siguiente
                        {
                            LimpiarGrid();
                        }
                    }
                    else//FJRF - Si no hay datos hacemos lo siguiente
                    {
                        LimpiarGrid();
                    }
                }
                catch (Exception ex)//FJRF - Si se presenta un error en el procedimiento hacemos lo siguiente
                {
                    MessageBox.Show("Descripción del error: " + ex.ToString(), "ERROR EN PROCEDIMIENTO ALMACENADO: SP_INFLIQPROD");//FJRF - Enviamos el mensaje de error
                }
            }
            Mouse.OverrideCursor = Cursors.Arrow;//FJRF - Pone el cursor de forma normal
        }
        private void DgDatos_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella

            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = strProceso.Replace("System.Windows.Controls.ComboBoxItem:", "").Trim();//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "PRODUCCIÓN")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "PORCENTAJE" || strNombreColumna == "CANTIDAD" || strNombreColumna == "CATEGORIA" || strNombreColumna == "PARES" || strNombreColumna == "PESOS" || strNombreColumna == "APAGAR")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
            if (strProceso == "GUARNECIDA" || strProceso == "TERMINADA")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "PORCENTAJE" || strNombreColumna == "CATEGORIAPORREFERENCIA" || strNombreColumna == "CANTIDADPROCESO" || strNombreColumna == "FESTIVO" || strNombreColumna == "VALOR" || strNombreColumna == "NETO")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "ENTREGADO" || strNombreColumna == "DEVUELTO" || strNombreColumna == "PARCIAL" || strNombreColumna == "CANTIDAD" || strNombreColumna == "ESTANDAR" || strNombreColumna == "CANTIDADREAL" || strNombreColumna == "APAGAR")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "PORCENTAJE" || strNombreColumna == "CANTIDAD" || strNombreColumna == "CATEGORIA" || strNombreColumna == "PARES" || strNombreColumna == "PESOS" || strNombreColumna == "APAGAR")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
        }
        private void DgDatos2_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella

            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = strProceso.Replace("System.Windows.Controls.ComboBoxItem:", "").Trim();//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "PRODUCCIÓN")//FJRF - Preguntamos si la variable trae este dato
            {
                //FJRF - No hace nada
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "CANTIDADREAL" || strNombreColumna == "APAGAR")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "BASE" || strNombreColumna == "PARTICIPACION" || strNombreColumna == "DEVENGADOPRODUCCION" || strNombreColumna == "NOTRABAJADAS" || strNombreColumna == "TRABAJADAS" || strNombreColumna == "PARTDEDUCCIONES" || strNombreColumna == "PARTBONIFICACIONES" || strNombreColumna == "OTRASDEDUCCIONES" || strNombreColumna == "OTRASBONIFICACIONES" || strNombreColumna == "TOTALEQUIPO" || strNombreColumna == "AJUSTE" || strNombreColumna == "NETOAPAGAR" || strNombreColumna == "FESTIVO")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
        }
        private void DgDatos3_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella

            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = strProceso.Replace("System.Windows.Controls.ComboBoxItem:", "").Trim();//FJRF - Dejamos solo la palabra seleccionada en la variable
            }

            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                if (strNombreColumna == "CANTIDADREAL" || strNombreColumna == "APAGAR")
                {
                    (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";
                    (e.Column as DataGridTextColumn).CellStyle = newCellStyleAlinearDerecha();
                }
            }
        }
        private void CboEmpleado_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (CboEmpleado.SelectedIndex != -1)
            {
                LimpiarGrid();
            }
        }
        private void CboEquipo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LimpiarGrid();
        }
        private void CboProcesoSeleccionado_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LimpiarGrid();
        }
        private void ImprmirReportes()
        {
            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = EnviarSoloTexto(strProceso, "Combo");//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "PRODUCCIÓN")//FJRF - Preguntamos si la variable trae este dato
            {
                DsImprimir = new DataSet("dsLiquidacionDeNomina");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimir.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNomina.rpt" };

                vista.Show();
            }
            if (strProceso == "GUARNECIDA" || strProceso == "TERMINADA")//FJRF - Preguntamos si la variable trae este dato
            {
                
                DsImprimir = new DataSet("dsLiquidacionDeNominaGuarnecida.xsd");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimirGuarnecida.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNominaGuarnecida.rpt" };

                vista.Show();
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                DsImprimir = new DataSet("dsLiquidacionDeNominaMontaje2");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimirLiquidacionMontaje2.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNominaMontaje2.rpt" };

                vista.Show();
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                DsImprimir = new DataSet("dsLiquidacionDeNominaIncentivoCorte2");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimirIncentivoCorte2.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNominaIncentivoCorte2.rpt" };

                vista.Show();
            }
        }
        private void BtnImprimirPlano_Click(object sender, RoutedEventArgs e)
        {
            ImprmirReportes();
        }
        private void BtnImprimirOpcion1_Click(object sender, RoutedEventArgs e)
        {
            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = EnviarSoloTexto(strProceso, "Combo");//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                DsImprimir = new DataSet("dsLiquidacionDeNominaMontaje1");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimirLiquidacionMontaje1.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNominaMontaje1.rpt" };

                vista.Show();
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                DsImprimir = new DataSet("dsLiquidacionDeNominaIncentivoCorte");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimirIncentivoCorte.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNominaIncentivoCorte.rpt" };

                vista.Show();
            }
        }
        private void BtnImprimirOpcion2_Click(object sender, RoutedEventArgs e)
        {
            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = EnviarSoloTexto(strProceso, "Combo");//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                DsImprimir = new DataSet("dsLiquidacionDeNominaIncentivoCorte1");

                CargarParametrosImpresion();//FJRF - Enviamos los parametros al reporte

                DsImprimir.Tables.Add(DtImprimirIncentivoCorte1.Copy());//Encabezado Informe
                DsImprimir.Tables.Add(DtImprimirParametros.Copy());//Parametros del informe Informe

                produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteCrystalReport + "rptInformeLiquidacionDeNominaIncentivoCorte1.rpt" };

                vista.Show();
            }
        }
        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
        private void LimpiarGrid()
        {
            DgDatos1.ItemsSource = null;//FJRF - Descargamos los datos
            DgDatos1.Items.Clear();//FJRF - Limpiamos los datos del grid

            DgDatos2.Visibility = Visibility.Hidden;//FJRF - Ponemos el grid invisible
            DgDatos3.Visibility = Visibility.Hidden;//FJRF - Ponemos el grid invisible

            DgDatos1.Height = 400;//FJRF - Tamaño grande del grid forma normal
            DgDatos1.Width = 990;//FJRF - Tamaño grande del grid forma normal

            BtnImprimirOpcion1.Visibility = Visibility.Hidden;//FJRF - Ponemos invisible la opcion de imprimir
            BtnImprimirOpcion2.Visibility = Visibility.Hidden;//FJRF - Ponemos invisible la opcion de imprimir

            BtnImprimirOpcion1.IsEnabled = false;//FJRF - Se inabilita el imprimir
            BtnImprimirPlano.IsEnabled = false;//FJRF - Se inabilita el imprimir
        }
        #region ParaObtenerLasPropiedadesDeLaCeldaDelGrid
        //DataGridCell cell = DataGridHelper.GetCell(dgEst, dgEst.SelectedIndex, 0);//FJRF - Asi se llama
        static class DataGridHelper
        {
            static public DataGridCell GetCell(DataGrid dg, int row, int column)
            {
                DataGridRow rowContainer = GetRow(dg, row);

                if (rowContainer != null)
                {
                    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);

                    // try to get the cell but it may possibly be virtualized
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    if (cell == null)
                    {
                        // now try to bring into view and retreive the cell
                        dg.ScrollIntoView(rowContainer, dg.Columns[column]);
                        cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    }
                    return cell;
                }
                return null;
            }

            static public DataGridRow GetRow(DataGrid dg, int index)
            {
                DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
                if (row == null)
                {
                    // may be virtualized, bring into view and try again
                    dg.ScrollIntoView(dg.Items[index]);
                    row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
                }
                return row;
            }

            static T GetVisualChild<T>(Visual parent) where T : Visual
            {
                T child = default(T);
                int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
                for (int i = 0; i < numVisuals; i++)
                {
                    Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                    child = v as T;
                    if (child == null)
                    {
                        child = GetVisualChild<T>(v);
                    }
                    if (child != null)
                    {
                        break;
                    }
                }
                return child;
            }
        }
        #endregion
        #region ParaAlinearALaDerecha
        public static Style newCellStyleAlinearDerecha()
        {
            System.Windows.Style style = new Style(typeof(DataGridCell));
            style.Setters.Add(new System.Windows.Setter
            {
                Property = Control.HorizontalAlignmentProperty,
                Value = HorizontalAlignment.Right
            });
            return style;
        }
        #endregion
        private void CargarParametrosImpresion()
        {
            #region CreamosLasColmnasDelEncabezado
            DtImprimirParametros = new DataTable();
            //FJRF - CREAMOS LAS COLUMNAS DE LOS PARAMETROS A ENVIAR
            DtImprimirParametros.Columns.Add("ANO", System.Type.GetType("System.String"));
            DtImprimirParametros.Columns.Add("SEMANA", System.Type.GetType("System.String"));
            DtImprimirParametros.Columns.Add("PROCESO", System.Type.GetType("System.String"));
            DtImprimirParametros.Columns.Add("SEMANADESDE", System.Type.GetType("System.String"));
            DtImprimirParametros.Columns.Add("SAMANAHASTA", System.Type.GetType("System.String"));
            #endregion
            #region AsignamosEnLasColmnasDelEncabezadoLosValores
            
            DataRow drImprimirParametros;
            drImprimirParametros = DtImprimirParametros.NewRow();
            //FJRF - ASIGNAMOS LOS VALORES
            drImprimirParametros["ANO"] = CboAño.SelectedValue.ToString();
            drImprimirParametros["SEMANA"] = CboSemana.SelectedValue.ToString();
            drImprimirParametros["PROCESO"] = EnviarSoloTexto(CboProceso.SelectedValue.ToString(),"Combo");
            drImprimirParametros["SEMANADESDE"] = LblDesde.Content.ToString();
            drImprimirParametros["SAMANAHASTA"] = LblHasta.Content.ToString();
            DtImprimirParametros.Rows.Add(drImprimirParametros);
            #endregion
 
        }
        private String EnviarSoloTexto(String StrCadena, String StrObjeto)
        {
            String StrDatoRetornado = "";

            if (StrObjeto.ToUpper().Trim() == "COMBO")
            {
                StrDatoRetornado = StrCadena.Replace("System.Windows.Controls.ComboBoxItem:", "");
            }
            return StrDatoRetornado.Trim();
        }

        private void DgDatos1_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = EnviarSoloTexto(strProceso,"Combo");//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                if (DgDatos1.Height == 400)
                {
                    DgDatos1.Width = 490;//FJRF - Tamaño grande del grid forma normal
                    DgDatos1.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2

                    BtnImprimirOpcion1.Visibility = Visibility.Visible;

                    DgDatos3.Visibility = Visibility.Visible;
                    BtnImprimirOpcion2.Visibility = Visibility.Visible;

                    DgDatos2.Visibility = Visibility.Visible;
                    BtnImprimirPlano.Visibility = Visibility.Visible;
                }
                else
                {
                    DgDatos1.Width = 990;//FJRF - Tamaño grande del grid forma normal
                    DgDatos1.Height = 400;//FJRF - Tamaño grande del grid forma normal
                    BtnImprimirOpcion1.Visibility = Visibility.Hidden;

                    DgDatos3.Visibility = Visibility.Hidden;
                    BtnImprimirOpcion2.Visibility = Visibility.Hidden;

                    DgDatos2.Visibility = Visibility.Hidden;
                    BtnImprimirPlano.Visibility = Visibility.Hidden;
                }
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                if (DgDatos1.Height == 400)
                {
                    DgDatos1.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2

                    BtnImprimirOpcion1.Visibility = Visibility.Visible;

                    DgDatos2.Visibility = Visibility.Visible;
                    BtnImprimirPlano.Visibility = Visibility.Visible;
                }
                else
                {
                    DgDatos1.Height = 400;//FJRF - Tamaño grande del grid forma normal
                    BtnImprimirOpcion1.Visibility = Visibility.Hidden;

                    DgDatos2.Visibility = Visibility.Hidden;
                    BtnImprimirPlano.Visibility = Visibility.Hidden;
                }
            }
        }

        private void DgDatos3_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = EnviarSoloTexto(strProceso, "Combo");//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                if (DgDatos3.Height == 400)
                {
                    DgDatos3.Width = 490;//FJRF - Tamaño grande del grid forma normal
                    DgDatos3.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2

                    DgDatos3.Margin = new Thickness(508, 12, 0, 0);//FJRF - Establece las nuevas margenes

                    BtnImprimirOpcion2.Visibility = Visibility.Visible;

                    DgDatos2.Visibility = Visibility.Visible;
                    BtnImprimirPlano.Visibility = Visibility.Visible;

                    DgDatos1.Visibility = Visibility.Visible;
                    BtnImprimirOpcion1.Visibility = Visibility.Visible;
                }
                else
                {
                    DgDatos3.Margin = new Thickness(8, 12, 0, 0);//FJRF - Establece las nuevas margenes

                    DgDatos3.Width = 990;//FJRF - Tamaño grande del grid forma normal
                    DgDatos3.Height = 400;//FJRF - Tamaño grande del grid forma normal
                    
                    BtnImprimirOpcion2.Visibility = Visibility.Hidden;

                    DgDatos2.Visibility = Visibility.Hidden;
                    BtnImprimirPlano.Visibility = Visibility.Hidden;

                    DgDatos1.Visibility = Visibility.Hidden;
                    BtnImprimirOpcion1.Visibility = Visibility.Hidden;
                }
            }
        }
        private void DgDatos2_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            string strProceso = CboProceso.SelectedValue.ToString().Trim();//FJRF - Cargamos el proceso 
            if (String.IsNullOrEmpty(strProceso) == true)//FJRF - Verificamos que la variable no venga nula y traiga datos
            {
                strProceso = " ";//FJRF - Si no trae datos limpiamos la variable para que no quede nula
            }
            else//FJRF - En caso de tener datos hacemos lo siguiente
            {
                strProceso = EnviarSoloTexto(strProceso, "Combo");//FJRF - Dejamos solo la palabra seleccionada en la variable
            }
            if (strProceso == "INCENTIVO CORTE")//FJRF - Preguntamos si la variable trae este dato
            {
                if (DgDatos2.Height == 400)
                {
                    DgDatos2.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2

                    DgDatos2.Margin = new Thickness(8, 247, 0, 0);//FJRF - Establece las nuevas margenes

                    BtnImprimirPlano.Visibility = Visibility.Visible;

                    DgDatos1.Visibility = Visibility.Visible;
                    BtnImprimirOpcion1.Visibility = Visibility.Visible;

                    DgDatos3.Visibility = Visibility.Visible;
                    BtnImprimirOpcion2.Visibility = Visibility.Visible;
                }
                else
                {
                    DgDatos2.Margin = new Thickness(8, 12, 0, 0);//FJRF - Establece las nuevas margenes

                    DgDatos2.Height = 400;//FJRF - Tamaño grande del grid forma normal

                    BtnImprimirPlano.Visibility = Visibility.Hidden;

                    DgDatos1.Visibility = Visibility.Hidden;
                    BtnImprimirOpcion1.Visibility = Visibility.Hidden;

                    DgDatos3.Visibility = Visibility.Hidden;
                    BtnImprimirOpcion2.Visibility = Visibility.Hidden;
                }
            }
            if (strProceso == "MONTAJE" || strProceso == "SOLADURA" || strProceso == "TUBULAR" || strProceso == "SANDALIAS")//FJRF - Preguntamos si la variable trae este dato
            {
                if (DgDatos2.Height == 400)
                {
                    DgDatos2.Height = 170;//FJRF - En caso de tener datos le damos espacio al grid 2

                    DgDatos2.Margin = new Thickness(8, 247, 0, 0);//FJRF - Establece las nuevas margenes

                    BtnImprimirPlano.Visibility = Visibility.Visible;

                    DgDatos1.Visibility = Visibility.Visible;
                    BtnImprimirOpcion1.Visibility = Visibility.Visible;
                }
                else
                {
                    DgDatos2.Margin = new Thickness(8, 12, 0, 0);//FJRF - Establece las nuevas margenes

                    DgDatos2.Height = 400;//FJRF - Tamaño grande del grid forma normal

                    BtnImprimirPlano.Visibility = Visibility.Hidden;

                    DgDatos1.Visibility = Visibility.Hidden;
                    BtnImprimirOpcion1.Visibility = Visibility.Hidden;
                }
            }
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }
    }
}
